#include "equipement.h"

//fonction d'initialisation et de libération

//Initialise tout à 0
void initEquipement (Equipement *eq)
{
  	eq->idEquipement = 0;
    eq->dimX = 0;
	eq->dimY = 0;
	eq->posX = 0;
	eq->posY = 0;
	eq->degats = 0;
	eq->protection = 0;
}

//Remplis les champs de la structure
void parametreEquipement (Equipement *eq, int idEquipement, int dimX, int dimY, int posX, int posY, int degats, int protection)
{
    setidEquipement (eq,idEquipement);
    setdimXEquipement (eq,dimX);
    setdimYEquipement (eq,dimY);
    setposXEquipement (eq ,posX);
    setposYEquipement (eq, posY);
    setdegatsEquipement (eq,degats);
    setprotectionEquipement (eq, protection);
}



/* Fonctions inutilisee, car on alloue dans la pile */
void libereEquipement (Equipement *eq)
{
   assert (eq != NULL);
   free(eq);
}


//accesseurs

int getidEquipement(const Equipement *eq)
{
   assert(eq != NULL);
   return eq->idEquipement;
}

int getdimXEquipement (const Equipement *eq)
{
   assert(eq != NULL);
   return eq->dimX;
}

int getdimYEquipement (const Equipement *eq)
{
   assert(eq != NULL);
   return eq->dimY;
}

int getposXEquipement (const Equipement *eq)
{
   assert(eq != NULL);
   return eq->posX;
}

int getposYEquipement (const Equipement *eq)
{
   assert(eq != NULL);
   return eq->posY;
}

int getdegatsEquipement (const Equipement *eq)
{
   assert(eq != NULL);
   return eq->degats;
}

int getprotectionEquipement (const Equipement *eq)
{
   assert(eq != NULL);
   return eq->protection;
}

//mutateurs
void setidEquipement (Equipement *eq, int idEquipement)
{
   assert (eq!=NULL);
   assert (idEquipement >= 0);
   eq->idEquipement= idEquipement;
}

void setdimXEquipement (Equipement *eq, int dimX)
{
   assert (eq!=NULL);
   assert (dimX >= 0);
   eq->dimX= dimX;
}

void setdimYEquipement (Equipement *eq, int dimY)
{
   assert (eq!=NULL);
   assert (dimY >= 0);
   eq->dimY= dimY;
}

void setposXEquipement (Equipement *eq , int posX)
{
   assert (eq!=NULL);
   eq->posX= posX;
}

void setposYEquipement (Equipement *eq, int posY)
{
   assert (eq!=NULL);
   eq->posY= posY;
}
void setdegatsEquipement (Equipement *eq, int degats)
{
   assert (eq!=NULL);
   eq->degats= degats;
}

void setprotectionEquipement (Equipement *eq, int protection)
{
   assert (eq!=NULL);
   eq->protection= protection;
}


// Fonctions de copie d'une structure dans une autre
/**
@brief Copie la structure eq2 dans la structure eq1
**/
void copierEquipement (Equipement *eq1, Equipement *eq2)
{
    eq1->idEquipement = eq2->idEquipement;
	eq1->dimX = eq2->dimX;
	eq1->dimY = eq2->dimY;
	eq1->posX = eq2->posX;
	eq1->posY = eq2->posY;
	eq1->degats = eq2->degats;
	eq1->protection = eq2->protection;

}

/**
@brief Cree une structure equipement, la remplis avec les donnees de eq, puis retourne un pointeur le nouvel equipement
**/



//Gestion des equipements

void deplacerEquipement(Equipement *eq)
{
    assert(eq!=NULL);

    /* Equipements pour la fusee du haut */
    if(getidEquipement(eq)==10)
    {
      eq->posY=(eq->posY)+1;

    }

    /* Equipements pour la fusee du bas */
    if(getidEquipement(eq)==20)
    {
      eq->posY=(eq->posY)-1;
    }

}

//Test de non-régression
void testRegressionEquipement()
{
    printf("###  Test du module equipement ### \n");

    Equipement equipement;
    Equipement equipement2;

   //test des fonctions d'initialisation
    initEquipement (&equipement);

    printf("-- Fonction d'initialisation testees avec succes -- \n");

   //test des accesseurs et mutateurs
   setidEquipement (&equipement, 2);
   setdimXEquipement (&equipement, 2);
   setdimYEquipement (&equipement, 2);
   setposXEquipement (&equipement , 2);
   setposYEquipement (&equipement, 2);
   setdegatsEquipement (&equipement, 2);
   setprotectionEquipement (&equipement, 2);

   assert (getidEquipement(&equipement) == 2);
   assert (getdimXEquipement(&equipement) == 2);
   assert (getdimYEquipement(&equipement) == 2);
   assert (getposXEquipement(&equipement) == 2);
   assert (getposYEquipement(&equipement) == 2);
   assert (getdegatsEquipement(&equipement) == 2);
   assert (getprotectionEquipement(&equipement) == 2);

   printf("-- Accesseurs et mutateurs testes avec succes  -- \n");

    //test de la fonction parametreEquipement

    initEquipement (&equipement2);
    parametreEquipement (&equipement2, 2,2, 2, 2, 2, 2, 2);

    assert (getidEquipement(&equipement2) == 2);
    assert (getdimXEquipement(&equipement2) == 2);
    assert (getdimYEquipement(&equipement2) == 2);
    assert (getposXEquipement(&equipement2) == 2);
    assert (getposYEquipement(&equipement2) == 2);
    assert (getdegatsEquipement(&equipement2) == 2);
    assert (getprotectionEquipement(&equipement2) == 2);

    printf("-- Fonction de parametrage testee avec succes  -- \n");

    printf("***  Test du module equipement realise avec succes *** \n\n\n");

}




